import { http } from '@/utils/http';

export type IotDataModel = {
  id: number;
  deviceNo: string;
  deviceName: string;
  data: Record<string, any>;
  sampletime: string;
};

// 统计数据的返回格式类型
export type IotDataSummaryModel = Array<any>; // 返回的是数组格式，[deviceNo, sampletime, xValue, yValue, zValue?]

/** 分页获取物联网数据 */
export const getIotDataPageListApi = (params: {
  page: number;
  size: number;
  timeType: number;
  timeRange?: string[];
  recent?: number;
  deviceNos?: string[];
}) => {
  return http.request(
    'get',
    '/iotdata/page-list',
    {
      params: params
    }
  );
};

/** 删除物联网数据 */
export const deleteIotDataApi = (data: {
  deleteType: number;
  ids?: number[];
  deviceNos?: string[];
  timeType?: number;
  timeRange?: string[];
  recent?: number;
}) => {
  return http.request(
    'delete',
    '/iotdata/delete',
    {
      data:data
    }
  );
};

/** 获取单条物联网波形 */
export const getIotDataOneWaveApi = (params: {
  sampletime: number;
  pageFlag: number;
  deviceNo: string;
  type: string;
  domain: number;
  direction: number;
}) => {
  return http.request<IotDataModel>(
    'get',
    '/iotdata/getOneWave',
    { params }
  );
};

/** 获取实时物联网波形 */
export const getIotDataRealtimeWaveApi = (params: {
  deviceNo: string;
  type: string;
  domain: number;
  direction: number;
}) => {
  return http.request<IotDataModel>(
    'get',
    '/iotdata/getRealtimeWave',
    { params }
  );
};

/** 分页获取物联网统计数据 */
export const getIotDataSummaryPageListApi = (params: {
  page: number;           // 页码
  size: number;           // 每页数量
  distributeTableId?: number; // 分布式表id主键
  timeType: number;       // 0-时间段 1-最近时间
  timeRange?: string[];   // 时间范围[开始,结束] 当TimeType=0时使用
  recent?: number;        // 最近秒数 当TimeType=1时使用
  deviceNos?: string[];   // 设备编号数组
  dimension: number;      // 2d还是3d，值：2或3
  xAxisParam: string;     // X轴参数
  yAxisParam: string;     // Y轴参数
  zAxisParam?: string;    // Z轴参数，当dimension=3时必需
  xFilterMode?: string;   // X轴过滤方式：auto(自动), custom(自定义)
  yFilterMode?: string;   // Y轴过滤方式：auto(自动), custom(自定义)
  zFilterMode?: string;   // Z轴过滤方式：auto(自动), custom(自定义)
  xMin?: number;          // X轴最小值，当xFilterMode=custom时使用
  xMax?: number;          // X轴最大值，当xFilterMode=custom时使用
  yMin?: number;          // Y轴最小值，当yFilterMode=custom时使用
  yMax?: number;          // Y轴最大值，当yFilterMode=custom时使用
  zMin?: number;          // Z轴最小值，当zFilterMode=custom时使用
  zMax?: number;          // Z轴最大值，当zFilterMode=custom时使用
  orderBy?: string;       // 排序方式
}) => {
  return http.request(
    'get',
    '/iotdata/summary-page-list',
    {
      params: params
    }
  );
};
